Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/interfaces/AddInterfacePage.vue fda9187e95d8b9cc8373c1de23cefce6928c241d (fda9187e) Text, 109.34 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 overflow-hidden min-w-0 bg-gradient-to-br from-slate-50 via-slate-100 to-white dark:from-zinc-950 dark:via-zinc-900 dark:to-zinc-900"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"overflow-y-auto p-3 md:p-6 space-y-4 max-w-5xl mx-auto w-full"Tb4b4b4>
T8b949e<!-- community interfaces -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEditingInterface Tff7b72&& Te6edf3config Tff7b72!= Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3show_suggested_community_interfacesTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white/95 dark:bg-zinc-900/80 backdrop-blur border border-gray-200 dark:border-zinc-800 rounded-3xl shadow-lg divide-y divide-gray-200 dark:divide-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex p-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"Tb4b4b4>Quick startTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-lg text-gray-900 dark:text-white"Tb4b4b4>Community InterfacesTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-200"Tb4b4b4>
One-click helpers for public TCP relays. Spin up your own when possible to ensure
availability.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto ml-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 bg-white border border-gray-200 hover:border-red-300 p-2 rounded-full shadow-sm dark:bg-zinc-800 dark:text-white dark:border-zinc-700 dark:hover:border-red-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3updateConfigTb4b4b4(Tb4b4b4{ Te6edf3show_suggested_community_interfacesTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 20 20"
Te6edf3fillTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-5 h-5"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3dTff7b72=Ta5d6ff"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"divide-y divide-gray-200 dark:text-white"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3communityIface Tff7b72in Te6edf3communityInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex px-3 py-2 items-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-gray-100"Tb4b4b4>Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-300"Tb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3target_host Tff7b72}}:Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3target_port Tff7b72}}
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3onlineTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"ml-1 text-green-500 font-bold"Tb4b4b4>OnlineTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"ml-1 text-red-500"Tb4b4b4>OfflineTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3descriptionTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 italic"
Tb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3description Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-2 my-auto"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-x-2 rounded-full bg-blue-600/90 px-3 py-1.5 text-xs font-semibold text-white shadow hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3newInterfaceName Tff7b72= Te6edf3communityIfaceTb4b4b4.Te6edf3nameTb4b4b4;
Te6edf3newInterfaceType Tff7b72= Te6edf3communityIfaceTb4b4b4.Te6edf3typeTb4b4b4;
Te6edf3newInterfaceTargetHost Tff7b72= Te6edf3communityIfaceTb4b4b4.Te6edf3target_hostTb4b4b4;
Te6edf3newInterfaceTargetPort Tff7b72= Te6edf3communityIfaceTb4b4b4.Te6edf3target_portTb4b4b4;
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Use InterfaceTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- add interface form -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white/95 dark:bg-zinc-900/85 backdrop-blur border border-gray-200 dark:border-zinc-800 rounded-3xl shadow-xl"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-3 items-center p-3 border-b border-gray-200 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3isEditingInterface Tff7b72? Ta5d6ff"Update" Tff7b72: Ta5d6ff"Create" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xl font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3isEditingInterface Tff7b72? Ta5d6ff"Edit Interface" Tff7b72: Ta5d6ff"Add Interface" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-300"Tb4b4b4>
Name your connection and select its transport type.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip text-xs" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadComportsTa5d6ff"Tb4b4b4>Reload PortsTb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72RouterLink Tb4b4b4:Te6edf3toTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'interfaces' Tb4b4b4}Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"secondary-chip text-xs"Tb4b4b4> View All Tb4b4b4<Tb4b4b4/Tff7b72RouterLinkTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-3 md:p-5 space-y-4"Tb4b4b4>
T8b949e<!-- iGeneric interface settings -->
T8b949e<!-- interface name -->
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>NameTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isEditingInterfaceTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"New Interface Name"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3isEditingInterface Tff7b72? Ta5d6ff'cursor-not-allowed bg-gray-200 dark:bg-zinc-800' Tff7b72: Ta5d6ff''Tb4b4b4]Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormSubLabel Te6edf3classTff7b72=Ta5d6ff"text-xs"Tb4b4b4>Interface names must be unique.Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface type -->
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>TypeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTypeTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3disabled Te6edf3selectedTb4b4b4>Pick a category…Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72optgroup Te6edf3labelTff7b72=Ta5d6ff"Automatic"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"AutoInterface"Tb4b4b4>Auto InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72optgroupTb4b4b4>
Tb4b4b4<Tff7b72optgroup Te6edf3labelTff7b72=Ta5d6ff"RNodes"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"RNodeInterface"Tb4b4b4>RNode InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"RNodeIPInterface"Tb4b4b4>RNode IP InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"RNodeMultiInterface"Tb4b4b4>RNode Multi InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72optgroupTb4b4b4>
Tb4b4b4<Tff7b72optgroup Te6edf3labelTff7b72=Ta5d6ff"IP Networks"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"TCPClientInterface"Tb4b4b4>TCP Client InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"TCPServerInterface"Tb4b4b4>TCP Server InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"UDPInterface"Tb4b4b4>UDP InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"I2PInterface"Tb4b4b4>I2P InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72optgroupTb4b4b4>
Tb4b4b4<Tff7b72optgroup Te6edf3labelTff7b72=Ta5d6ff"Hardware"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"SerialInterface"Tb4b4b4>Serial InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"KISSInterface"Tb4b4b4>KISS InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"AX25KISSInterface"Tb4b4b4>AX.25 KISS InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72optgroupTb4b4b4>
Tb4b4b4<Tff7b72optgroup Te6edf3labelTff7b72=Ta5d6ff"Pipelines"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"PipeInterface"Tb4b4b4>Pipe InterfaceTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72optgroupTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Need help?
Tb4b4b4<Tff7b72a Te6edf3classTff7b72=Ta5d6ff"text-blue-500 underline" Te6edf3hrefTff7b72=Ta5d6ff"/reticulum-docs/interfaces.html" Te6edf3targetTff7b72=Ta5d6ff"_blank"
Tb4b4b4>Reticulum Docs: Configuring InterfacesTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- TCPClientInterface -->
T8b949e<!-- interface target host -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPClientInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Target HostTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: example.com"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface target port -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPClientInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Target PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 1234"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- TCPServerInterface -->
T8b949e<!-- interface listen ip -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPServerInterface' Tff7b72|| Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-2"
Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Listen IPTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceListenIpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 0.0.0.0"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface listen port -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPServerInterface' Tff7b72|| Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-2"
Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Listen PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceListenPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 1234"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- UDPInterface -->
T8b949e<!-- interface forward ip -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Forward IPTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceForwardIpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 255.255.255.255"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface listen port -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Forward PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceForwardPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 1234"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- I2PInterface -->
T8b949e<!-- peers -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'I2PInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2 text-sm text-gray-500 dark:text-zinc-300"Tb4b4b4>
ⓘ To use the I2P interface, you must have an I2P router running on your system. When the I2P
Interface is added for the first time Reticulum will generate a new I2P address for the
interface and begin listening for inbound traffic.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PeersTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3peerTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter peer address (e.g: 5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq.b32.i2p)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-red-500 hover:bg-red-400 text-white text-sm p-2 rounded-lg"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeI2PPeerTb4b4b4(Te6edf3indexTb4b4b4)Ta5d6ff"
Tb4b4b4>
Remove
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-green-500 hover:bg-green-400 text-white text-sm px-4 py-2 rounded-lg"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addI2PPeerTb4b4b4(Ta5d6ff''Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Add Peer
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNode interface -->
T8b949e<!-- interface port -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rnode-use-ip" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeUseIPTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"rnode-use-ip" Te6edf3classTff7b72=Ta5d6ff"ml-2"Tb4b4b4>Connect over IPTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeUseIP Tff7b72|| Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeIPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>HostTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeIPHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 10.0.0.1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeIPPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: 7633"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-elseTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePortTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3comport Tff7b72of Te6edf3comportsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3device Tff7b72}} (Product: Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3product Tff7b72?? Ta5d6ff"?" Tff7b72}}, Serial:
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3serial Tff7b72?? Ta5d6ff"?" Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-blue-500 underline cursor-pointer" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadComportsTa5d6ff"Tb4b4b4>
Reload Ports
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface Frequency -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>FrequencyTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3formattedFrequencyTa5d6ff"Tb4b4b4>: Tff7b72{{ Te6edf3formattedFrequency Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeGHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"GHz"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-l-lg focus:ring-blue-500 focus:border-blue-500 w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormSubLabel Te6edf3classTff7b72=Ta5d6ff"text-center"Tb4b4b4>GHzTb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeMHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"MHz"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border-y border-gray-300 text-gray-900 text-sm focus:ring-blue-500 focus:border-blue-500 w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormSubLabel Te6edf3classTff7b72=Ta5d6ff"text-center"Tb4b4b4>MHzTb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodekHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"kHz"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-r-lg focus:ring-blue-500 focus:border-blue-500 w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormSubLabel Te6edf3classTff7b72=Ta5d6ff"text-center"Tb4b4b4>kHzTb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface bandwidth -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>BandwidthTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBandwidthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3bandwidth Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3bandwidthsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3bandwidthTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3bandwidthTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3bandwidth Tff7b72/ T79c0ff1000 Tff7b72}} KHz
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface txpower -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Transmit Power (dBm)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTxpowerTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-2 flex flex-wrap items-start gap-4"
Tb4b4b4>
T8b949e<!-- interface spreading factor -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Spreading FactorTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSpreadingFactorTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-500"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3spreadingfactor Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3spreadingfactorsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3spreadingfactorTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3spreadingfactorTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3spreadingfactor Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- interface coding rate -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Coding RateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCodingRateTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-500"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3codingrate Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3codingratesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3codingrateTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3codingrateTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3codingrate Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNodeMultiInterface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeMultiInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-400 mb-3"Tb4b4b4>
ⓘ The RNode Multi Interface is used for custom devices with multiple LoRa transceivers such
as the openCom XL.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePortTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3comport Tff7b72of Te6edf3comportsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3device Tff7b72}} (Product: Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3product Tff7b72?? Ta5d6ff"?" Tff7b72}}, Serial:
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3serial Tff7b72?? Ta5d6ff"?" Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-blue-500 underline cursor-pointer" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadComportsTa5d6ff"Tb4b4b4>Reload PortsTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNodeMultiInterface: Sub Interfaces -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeMultiInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Sub-InterfacesTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3subTb4b4b4, Te6edf3idxTb4b4b4) Tff7b72in Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3idxTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-2 border border-gray-200 rounded-lg dark:border-zinc-700"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Sub-Interface Name"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Frequency (Hz)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3frequencyTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>BandwidthTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3bandwidthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3bandwidth Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3bandwidthsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3bandwidthTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3bandwidthTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3bandwidth Tff7b72/ T79c0ff1000 Tff7b72}} KHz
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Spreading FactorTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3spreadingfactorTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3sf Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3spreadingfactorsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3sf Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Coding RateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3codingrateTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3cr Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3codingratesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3crTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3crTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3cr Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2 items-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>TX Power (dBm)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3txpowerTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Virtual PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3subTb4b4b4.Te6edf3vportTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-red-500 hover:bg-red-400 text-white text-sm p-2 rounded-lg"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeSubInterfaceTb4b4b4(Te6edf3idxTb4b4b4)Ta5d6ff"
Tb4b4b4>
Remove Sub-Interface
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-green-500 hover:bg-green-400 text-white text-sm px-4 py-2 rounded-lg"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addSubInterfaceTa5d6ff"
Tb4b4b4>
Add Sub-Interface
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Serial, KISS, and AX25Kiss -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'SerialInterface'Tb4b4b4, Ta5d6ff'KISSInterface'Tb4b4b4, Ta5d6ff'AX25KISSInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePortTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3comport Tff7b72of Te6edf3comportsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3comportTb4b4b4.Te6edf3deviceTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3device Tff7b72}} (Product: Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3product Tff7b72?? Ta5d6ff"?" Tff7b72}}, Serial:
Tff7b72{{ Te6edf3comportTb4b4b4.Te6edf3serial Tff7b72?? Ta5d6ff"?" Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-blue-500 underline cursor-pointer" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadComportsTa5d6ff"Tb4b4b4>
Reload Ports
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Serial connection baud rate (bps)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSpeedTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"9600"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>DatabitsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDatabitsTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"8"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>ParityTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceParityTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72undefinedTa5d6ff"Tb4b4b4>NoneTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"even"Tb4b4b4>EvenTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"odd"Tb4b4b4>OddTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>StopbitsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceStopbitsTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"1"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- KISS and AX.25 KISS -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'KISSInterface'Tb4b4b4, Ta5d6ff'AX25KISSInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"use-ax25"
Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'AX25KISSInterface'Ta5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3useKISSAX25Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"use-ax25" Te6edf3classTff7b72=Ta5d6ff"ml-2"Tb4b4b4>Enable AX.25 FramingTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Preamble (milliseconds)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePreambleTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"150"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>TX Tail (milliseconds)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTXTailTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"10"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>CDMA Persistence (milliseconds)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePersistenceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"200"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>CDMA Slot Time (milliseconds)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSlotTimeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-4 mt-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>SSIDTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSSIDTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3valueTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter SSID"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>CallsignTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCallsignTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter callsign"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Callsign ID IntervalTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDIntervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter interval (seconds)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Pipe Interface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'PipeInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300 mb-3"Tb4b4b4>
ⓘ Using this interface, Reticulum can use any program as an interface via stdin and stdout.
This can be usedto easily create virtual interfaces, or to interface with custom hardware or
other systems.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>CommandTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCommandTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: netcat -l 5757"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Respawn Delay (seconds)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRespawnDelayTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"5"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNodeInterface bitrate & link budget -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Calculated RNode Bitrate & Link BudgetTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Antenna Gain (dBi)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3antennaGainTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter gain"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-400 mt-1"Tb4b4b4>
ⓘ A stub or PCB antenna might have around 1 dBi of gain, where a directional Yagi might
have 5 dBi of gain.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>On-Air CalculationsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-3 gap-2 text-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-gray-100 p-3 rounded-lg border dark:bg-zinc-800 dark:border-zinc-600"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-700 dark:text-gray-300"Tb4b4b4>SensitivityTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3sensitivity Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-gray-100 p-3 rounded-lg border dark:bg-zinc-800 dark:border-zinc-600"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-700 dark:text-gray-300"Tb4b4b4>Data RateTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3dataRate Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-gray-100 p-3 rounded-lg border dark:bg-zinc-800 dark:border-zinc-600"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-700 dark:text-gray-300"Tb4b4b4>Link BudgetTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3linkBudget Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional AutoInterface settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'AutoInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional AutoInterface SettingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Group IDTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceGroupIDTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"reticulum"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Multicast Address TypeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceMulticastAddressTypeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72undefinedTa5d6ff"Tb4b4b4>(not set)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"permanent"Tb4b4b4>PermanentTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"temporary"Tb4b4b4>TemporaryTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-4 mt-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Network devicesTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDevicesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: wlan0,eth1"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Ignored DevicesTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIgnoredDevicesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: tun0,eth0"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-4 mt-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery ScopeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDiscoveryScopeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72undefinedTa5d6ff"Tb4b4b4>(not set)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"global"Tb4b4b4>GlobalTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"admin"Tb4b4b4>AdminTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"organisation"Tb4b4b4>OrganisationTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"site"Tb4b4b4>SiteTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"link"Tb4b4b4>LinkTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDiscoveryPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"48555"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Data PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDataPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"49555"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional TCPClientInterface settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPClientInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional TCPClientInterface SettingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"kiss-framing"Tb4b4b4>Enable KISS FramingTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"
Tb4b4b4>Enable this when connecting to software that uses KISS framing such as packet radio
sound modems. For KISS connections through serial hardware select "KISS Interface"
as the interface type.Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"kiss-framing" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceKISSFramingEnabledTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto mx-2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"i2p-tunneled"Tb4b4b4>Enable I2P tunnelingTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"
Tb4b4b4>Enables tunnelling through an I2P Connection using the TCPClientInterfaceTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"i2p-tunneled" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceI2PTunnelingEnabledTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto mx-2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional TCPClientInterface settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPServerInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional TCPServerInterface settingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabelTb4b4b4>Network deviceTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"
Tb4b4b4>Binds the interface to a specific network interfaceTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceNetworkDeviceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: eth0"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"prefer-ipv6"Tb4b4b4>Prefer IPv6Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"
Tb4b4b4>Binds the TCP Server Interface to an IPv6 addressTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"prefer-ipv6" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePreferIPV6Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto mx-2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional UDPInterface settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional UDPInterface settingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabelTb4b4b4>Network deviceTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"
Tb4b4b4>Binds the interface to a specific network interfaceTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceNetworkDeviceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g: eth0"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional RNodeInterface settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional RNodeInterface SettingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>CallsignTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCallsignTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter callsign"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Callsign ID IntervalTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDIntervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter interval (seconds)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Airtime Limit (Short)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceAirtimeLimitShortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter short airtime limit (% of a rolling 15 seconds window)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Airtime Limit (Long)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceAirtimeLimitLongTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter long airtime limit (% of a rolling 60 minutes window)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- optional interface settings -->
Tb4b4b4<Tff7b72ExpandingSectionTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Optional Interface SettingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Interface ModeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3modeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72undefinedTa5d6ff"Tb4b4b4>(not set)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"full"Tb4b4b4>FullTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"gateway"Tb4b4b4>GatewayTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"access_point"Tb4b4b4>Access PointTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"roaming"Tb4b4b4>RoamingTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"boundary"Tb4b4b4>BoundaryTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
This setting requires Transport Mode to be enabled.
Tb4b4b4<Tff7b72a
Te6edf3classTff7b72=Ta5d6ff"text-blue-500 underline"
Te6edf3hrefTff7b72=Ta5d6ff"/reticulum-docs/interfaces.html#interface-modes"
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Tb4b4b4>Reticulum Docs: Interface ModesTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Inferred Interface BitrateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrateTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter inferred bitrate"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- ifac settings -->
Tb4b4b4<Tff7b72ExpandingSectionTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>IFAC SettingsTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300 mb-2"Tb4b4b4>
ⓘ Interface Access Code settings are used for creating private networks and can be
configured on the interface level.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 lg:grid-cols-3 gap-y-2 lg:gap-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Network NameTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter network name"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>PassphraseTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphraseTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter passphrase"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>IFAC SizeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3ifac_sizeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"8"
Te6edf3maxTff7b72=Ta5d6ff"512"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter size (8-512)"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-zinc-900 dark:border-zinc-600 dark:text-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

Tb4b4b4<Tff7b72ExpandingSectionTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Interface DiscoveryTb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Advertise this InterfaceTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Broadcasts connection details so peers can find and connect to this interface.
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discoverableTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto mx-2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-300"Tb4b4b4>
LXMF must be installed to publish discovery announces. When enabled, Reticulum handles
signing, stamping, and periodic announces for this interface.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discoverableTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery NameTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Human friendly name"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Reachable OnTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3reachable_onTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Hostname, IP, or resolver script path"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Announce Interval (minutes)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"5"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Stamp ValueTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"discovery-encrypt" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_encryptTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"discovery-encrypt" Te6edf3classTff7b72=Ta5d6ff"ml-2"Tb4b4b4>Encrypt AnnouncesTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"publish-ifac" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3publish_ifacTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"publish-ifac" Te6edf3classTff7b72=Ta5d6ff"ml-2"Tb4b4b4>Include IFAC CredentialsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-3 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>LatitudeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3latitudeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3stepTff7b72=Ta5d6ff"0.00001"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>LongitudeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3longitudeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3stepTff7b72=Ta5d6ff"0.00001"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Height (m)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3heightTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"number" Te6edf3classTff7b72=Ta5d6ff"input-field" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-3 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery Frequency (Hz)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequencyTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery Bandwidth (Hz)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidthTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Discovery ModulationTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulationTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. LoRa"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400"Tb4b4b4>
If announce encryption is enabled, a valid network identity path is required in the
Reticulum configuration.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

Tb4b4b4<Tff7b72ExpandingSectionTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3titleTb4b4b4>Discover Interfaces (Peer)Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col mr-auto"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Enable Discovery ListenerTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>
Listen for announced interfaces and optionally auto-connect to them.
Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfacesTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto mx-2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Allowed Sources (comma separated)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_sourcesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Identity hashes"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Required Stamp ValueTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3required_discovery_valueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Auto-connect SlotsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3autoconnect_discovered_interfacesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormSubLabelTb4b4b4>Set to 0 to disable auto-connect.Tb4b4b4<Tb4b4b4/Tff7b72FormSubLabelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"mb-1"Tb4b4b4>Network Identity PathTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3network_identityTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"~/.reticulum/storage/identities/..."
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3savingDiscoveryTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveReticulumDiscoveryConfigTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3savingDiscovery Tff7b72? Ta5d6ff'progress-clock' Tff7b72: Ta5d6ff'content-save'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin-reverse'Tff7b72: Te6edf3savingDiscovery Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"ml-1"Tb4b4b4>Save Discovery PreferencesTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- add/save interface button -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 bg-white rounded shadow divide-y divide-gray-200 dark:bg-zinc-900"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-green-500 hover:bg-green-400 focus-visible:outline-green-500 my-auto inline-flex items-center gap-x-1 rounded-md p-2 text-sm font-semibold text-white shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 dark:text-white dark:focus:ring-blue-600 dark:focus:border-blue-600"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addInterfaceTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isEditingInterfaceTa5d6ff"Tb4b4b4>Save InterfaceTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-elseTb4b4b4>Add InterfaceTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3ExpandingSection Tff7b72from Ta5d6ff"./ExpandingSection.vue"Tb4b4b4;
Tff7b72import Te6edf3FormLabel Tff7b72from Ta5d6ff"../forms/FormLabel.vue"Tb4b4b4;
Tff7b72import Te6edf3FormSubLabel Tff7b72from Ta5d6ff"../forms/FormSubLabel.vue"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"AddInterfacePage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3FormSubLabelTb4b4b4,
Te6edf3FormLabelTb4b4b4,
Te6edf3ExpandingSectionTb4b4b4,
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3isEditingInterfaceTff7b72: Tff7b72falseTb4b4b4,

Te6edf3configTff7b72: Tff7b72nullTb4b4b4,

Te6edf3communityInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,

Te6edf3comportsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,

Te6edf3newInterfaceNameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTypeTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceGroupIDTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceMulticastAddressTypeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDevicesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceIgnoredDevicesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDiscoveryScopeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDiscoveryPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDataPortTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceTargetHostTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTargetPortTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceListenIpTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceListenPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceNetworkDeviceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfacePreferIPV6Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceKISSFramingEnabledTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceI2PTunnelingEnabledTff7b72: Tff7b72nullTb4b4b4,

Te6edf3sharedInterfaceSettingsTff7b72: Tb4b4b4{
Te6edf3modeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3network_nameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3passphraseTff7b72: Tff7b72nullTb4b4b4,
Te6edf3ifac_sizeTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3discoveryTff7b72: Tb4b4b4{
Te6edf3discoverableTff7b72: Tff7b72falseTb4b4b4,
Te6edf3discovery_nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3announce_intervalTff7b72: T79c0ff360Tb4b4b4,
Te6edf3reachable_onTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: T79c0ff14Tb4b4b4,
Te6edf3discovery_encryptTff7b72: Tff7b72falseTb4b4b4,
Te6edf3publish_ifacTff7b72: Tff7b72falseTb4b4b4,
Te6edf3latitudeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_frequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3reticulumDiscoveryTff7b72: Tb4b4b4{
Te6edf3discover_interfacesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3interface_discovery_sourcesTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3required_discovery_valueTff7b72: Tff7b72nullTb4b4b4,
Te6edf3autoconnect_discovered_interfacesTff7b72: T79c0ff0Tb4b4b4,
Te6edf3network_identityTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3savingDiscoveryTff7b72: Tff7b72falseTb4b4b4,

Te6edf3newInterfaceForwardIpTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceForwardPortTff7b72: Tff7b72nullTb4b4b4,

Te6edf3I2PSettingsTff7b72: Tb4b4b4{
Te6edf3newInterfacePeersTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3RNodeMultiInterfaceTff7b72: Tb4b4b4{
Te6edf3portTff7b72: Tff7b72nullTb4b4b4,
Te6edf3subInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3newInterfacePortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceRNodeUseIPTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceRNodeIPHostTff7b72: Ta5d6ff"localhost"Tb4b4b4,
Te6edf3newInterfaceRNodeIPPortTff7b72: Ta5d6ff"7633"Tb4b4b4,
Te6edf3RNodeGHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3RNodeMHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3RNodekHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3newInterfaceFrequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBandwidthTff7b72: T79c0ff125000Tb4b4b4,
Te6edf3newInterfaceTxpowerTff7b72: T79c0ff7Tb4b4b4,
Te6edf3newInterfaceSpreadingFactorTff7b72: T79c0ff12Tb4b4b4,
Te6edf3newInterfaceCodingRateTff7b72: T79c0ff5Tb4b4b4,

T8b949e// Serial, KISS, and AX25KISS options
Te6edf3newInterfaceSpeedTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDatabitsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceParityTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceStopbitsTff7b72: Tff7b72nullTb4b4b4,

T8b949e// KISS and AX25KISS
Te6edf3newInterfacePreambleTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTXTailTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfacePersistenceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceSlotTimeTff7b72: Tff7b72nullTb4b4b4,

T8b949e// RNode and KISS
Te6edf3newInterfaceCallsignTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceIDIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceFlowControlTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceAirtimeLimitLongTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceAirtimeLimitShortTff7b72: Tff7b72nullTb4b4b4,

T8b949e// Pipe interface
Te6edf3newInterfaceCommandTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceRespawnDelayTff7b72: Tff7b72nullTb4b4b4,

Te6edf3RNodeInterfaceDefaultsTff7b72: Tb4b4b4{
T8b949e// bandwidth in hz
Te6edf3bandwidthsTff7b72: Tb4b4b4[
T79c0ff7800Tb4b4b4, T8b949e// 7.8 kHz
T79c0ff10400Tb4b4b4, T8b949e// 10.4 kHz
T79c0ff15600Tb4b4b4, T8b949e// 15.6 kHz
T79c0ff20800Tb4b4b4, T8b949e// 20.8 kHz
T79c0ff31250Tb4b4b4, T8b949e// 31.25 kHz
T79c0ff41700Tb4b4b4, T8b949e// 41.7 kHz
T79c0ff62500Tb4b4b4, T8b949e// 62.5 kHz
T79c0ff125000Tb4b4b4, T8b949e// 125 kHz
T79c0ff250000Tb4b4b4, T8b949e// 250 kHz
T79c0ff500000Tb4b4b4, T8b949e// 500 kHz
T79c0ff1625000Tb4b4b4, T8b949e// 1625 kHz (for 2.4 GHz SX1280)
Tb4b4b4]Tb4b4b4,
Te6edf3codingratesTff7b72: Tb4b4b4[
T79c0ff5Tb4b4b4, T8b949e// 4:5
T79c0ff6Tb4b4b4, T8b949e// 4:6
T79c0ff7Tb4b4b4, T8b949e// 4:7
T79c0ff8Tb4b4b4, T8b949e// 4:8
Tb4b4b4]Tb4b4b4,
Te6edf3spreadingfactorsTff7b72: Tb4b4b4[T79c0ff5Tb4b4b4, T79c0ff6Tb4b4b4, T79c0ff7Tb4b4b4, T79c0ff8Tb4b4b4, T79c0ff9Tb4b4b4, T79c0ff10Tb4b4b4, T79c0ff11Tb4b4b4, T79c0ff12Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3RNodeInterfaceLoRaParametersTff7b72: Tb4b4b4{
Te6edf3antennaGainTff7b72: T79c0ff0Tb4b4b4,
Te6edf3noiseFloorTff7b72: T79c0ff5Tb4b4b4,
Te6edf3sensitivityTff7b72: Tff7b72nullTb4b4b4,
Te6edf3dataRateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3linkBudgetTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3formattedFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3totalHz Tff7b72= Tff7b72thisTb4b4b4.Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e9Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e9Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff GHzTa5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e6Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff MHzTa5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e3Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff kHzTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Tffd700${Te6edf3totalHzTffd700}Ta5d6ff HzTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3newInterfaceBandwidthTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceSpreadingFactorTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceCodingRateTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceTxpowerTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Ta5d6ff"RNodeInterfaceLoRaParameters.antennaGain"Tff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadReticulumDiscoveryConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadComportsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadCommunityInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// check if we are editing an interface
Tff7b72const Te6edf3interfaceName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3interface_nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3interfaceName Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isEditingInterface Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadInterfaceToEditTb4b4b4(Te6edf3interfaceNameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/configTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to load config
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updateConfigTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Te6edf3configTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save config!"Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3parseBoolTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3value Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Ta5d6ff"true"Tb4b4b4, Ta5d6ff"yes"Tb4b4b4, Ta5d6ff"1"Tb4b4b4, Ta5d6ff"y"Tb4b4b4, Ta5d6ff"on"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3valueTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadReticulumDiscoveryConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/discoveryTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3discovery Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3discovery Tff7b72?? Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfaces Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3discoveryTb4b4b4.Te6edf3discover_interfacesTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_sources Tff7b72= Te6edf3discoveryTb4b4b4.Te6edf3interface_discovery_sources Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72=
Te6edf3discoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3discoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3discoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3discoveryTb4b4b4.Te6edf3required_discovery_valueTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72=
Te6edf3discoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3discoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3discoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3discoveryTb4b4b4.Te6edf3autoconnect_discovered_interfacesTb4b4b4)
Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3network_identity Tff7b72= Te6edf3discoveryTb4b4b4.Te6edf3network_identity Tff7b72?? Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// safe to ignore if discovery config cannot be loaded
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveReticulumDiscoveryConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3savingDiscoveryTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3savingDiscovery Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3discover_interfacesTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfacesTb4b4b4,
Te6edf3interface_discovery_sourcesTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_sources Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3required_discovery_valueTff7b72:
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72=== Tff7b72null Tff7b72||
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3required_discovery_value Tff7b72=== Ta5d6ff""
Tff7b72? Tff7b72null
Tff7b72: Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3required_discovery_valueTb4b4b4)Tb4b4b4,
Te6edf3autoconnect_discovered_interfacesTff7b72:
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72=== Tff7b72null Tff7b72||
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3autoconnect_discovered_interfaces Tff7b72=== Ta5d6ff""
Tff7b72? T79c0ff0
Tff7b72: Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3autoconnect_discovered_interfacesTb4b4b4)Tb4b4b4,
Te6edf3network_identityTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3network_identity Tff7b72|| Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/discoveryTa5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Discovery settings saved"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadReticulumDiscoveryConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save discovery settings"Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3savingDiscovery Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadComportsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/comportsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3comports Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3comportsTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// do nothing if failed to load interfaces
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadCommunityInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/community-interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3communityInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// do nothing if failed to load interfaces
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadInterfaceToEditTb4b4b4(Te6edf3interfaceNameTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// fetch interfaces
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3interfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4;

T8b949e// find interface, else show error and redirect to interfaces
Tff7b72const Te6edf3iface Tff7b72= Te6edf3interfacesTb4b4b4[Te6edf3interfaceNameTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3ifaceTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Ta5d6ff"The selected interface for editing could not be found."Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"interfaces"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// set form values
Tff7b72thisTb4b4b4.Te6edf3newInterfaceName Tff7b72= Te6edf3interfaceNameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4;

T8b949e// AutoInterface additional settings
Tff7b72thisTb4b4b4.Te6edf3newInterfaceGroupID Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3group_idTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceMulticastAddressType Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3multicast_address_typeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDevices Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3devicesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceIgnoredDevices Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3ignored_devicesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryScope Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_scopeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_portTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDataPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3data_portTb4b4b4;

T8b949e// tcp client interface
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3target_hostTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3target_portTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3kiss_framingTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceKISSFramingEnabled Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3i2p_tunneledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3prefer_ipv6Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}

T8b949e// tcp server interface & udp interface
Tff7b72thisTb4b4b4.Te6edf3newInterfaceNetworkDevice Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3deviceTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_ipTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_portTb4b4b4;

T8b949e// I2P Interface
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3peersTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3peersToAdd Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3peersTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff","Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3address Tff7b72of Te6edf3peersToAddTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3addI2PPeerTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// udp interface
Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardIp Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3forward_ipTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3forward_portTb4b4b4;

T8b949e// Port (For RNode, Serial, and KISS)
Tff7b72thisTb4b4b4.Te6edf3newInterfacePort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"RNodeInterface" Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"RNodeIPInterface"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3address Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3parts Tff7b72= Te6edf3addressTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPHost Tff7b72= Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPPort Tff7b72= Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72|| Ta5d6ff"7633"Tb4b4b4;
Tb4b4b4}

T8b949e// RNode Interface
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFrequency Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3frequencyTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeGHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72/ T79c0ff1e9Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeMHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72% T79c0ff1e9Tb4b4b4) Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodekHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72% T79c0ff1e6Tb4b4b4) Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidth Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3bandwidthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpower Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3txpowerTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactor Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3spreadingfactorTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRate Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3codingrateTb4b4b4;

T8b949e// RNode Multi Interface
Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfaces Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3sub_interfacesTb4b4b4;

T8b949e// Serial, KISS, and AX25KISS
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpeed Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3speedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDatabits Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3databitsTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceParity Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3parityTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceStopbits Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3stopbitsTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3newInterfacePreamble Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3preambleTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTXTail Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3txtailTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfacePersistence Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3persistenceTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSlotTime Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3slottimeTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3newInterfaceCallsign Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3callsignTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDInterval Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3id_intervalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSSID Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3ssidTb4b4b4;

T8b949e// Airtime limit
Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitLong Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3airtime_limit_longTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitShort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3airtime_limit_shortTb4b4b4;

T8b949e// Pipe Interface
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCommand Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3commandTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRespawnDelay Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3respawn_delayTb4b4b4;

T8b949e// Shared interface settings
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3modeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrate Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3bitrateTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_name Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3network_nameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphrase Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3passphraseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3ifac_size Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3ifac_sizeTb4b4b4;

T8b949e// interface discovery
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_name Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3announce_interval Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3reachable_on Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_value Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3discovery_stamp_value Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_encryptTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3publish_ifacTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3latitude Tff7b72!== Tff7b72undefined Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3longitude Tff7b72!== Tff7b72undefined Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3height Tff7b72!== Tff7b72undefined Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequency Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_frequency Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidth Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_bandwidth Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulation Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_modulation Tff7b72?? Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// do nothing if failed to load interfaces
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// process sub interfaces for RNodeMultiInterface
Tff7b72let Te6edf3subInterfacesData Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeMultiInterface"Tb4b4b4) Tb4b4b4{
Te6edf3subInterfacesData Tff7b72= Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3subInterfaceTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3frequencyTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3frequencyTb4b4b4,
Te6edf3bandwidthTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3bandwidthTb4b4b4,
Te6edf3txpowerTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3txpowerTb4b4b4,
Te6edf3spreadingfactorTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3spreadingfactorTb4b4b4,
Te6edf3codingrateTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3codingrateTb4b4b4,
Te6edf3vportTff7b72: Te6edf3subInterfaceTb4b4b4.Te6edf3vportTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3discoveryEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3isRadioInterface Tff7b72= Tb4b4b4[Ta5d6ff"RNodeInterface"Tb4b4b4, Ta5d6ff"RNodeIPInterface"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceTypeTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fallbackDiscoveryFrequency Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequency Tff7b72??
Tb4b4b4(Te6edf3discoveryEnabled Tff7b72&& Te6edf3isRadioInterface Tff7b72? Tff7b72thisTb4b4b4.Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fallbackDiscoveryBandwidth Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidth Tff7b72??
Tb4b4b4(Te6edf3discoveryEnabled Tff7b72&& Te6edf3isRadioInterface Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidth Tff7b72: Tff7b72nullTb4b4b4)Tb4b4b4;

T8b949e// add interface
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfaces/addTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3allow_overwriting_interfaceTff7b72: Tff7b72thisTb4b4b4.Te6edf3isEditingInterfaceTb4b4b4,

T8b949e// required values
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4,
Te6edf3typeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTypeTb4b4b4,

T8b949e// AutoInterface
Te6edf3group_idTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceGroupIDTb4b4b4,
Te6edf3multicast_address_typeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceMulticastAddressTypeTb4b4b4,
Te6edf3devicesTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDevicesTb4b4b4,
Te6edf3ignored_devicesTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceIgnoredDevicesTb4b4b4,
Te6edf3discovery_scopeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryScopeTb4b4b4,
Te6edf3discovery_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryPortTb4b4b4,
Te6edf3data_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDataPortTb4b4b4,

T8b949e// tcp client interface
Te6edf3target_hostTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetHostTb4b4b4,
Te6edf3target_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetPortTb4b4b4,

T8b949e// TCP Client & Server interface
Te6edf3kiss_framingTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceKISSFramingEnabledTb4b4b4,
Te6edf3i2p_tunneledTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabledTb4b4b4,

T8b949e// tcp server interface & udp interface
Te6edf3listen_ipTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIpTb4b4b4,
Te6edf3listen_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenPortTb4b4b4,
Te6edf3deviceTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceNetworkDeviceTb4b4b4,
Te6edf3prefer_ipv6Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePreferIPV6Tb4b4b4,

T8b949e// udp interface
Te6edf3forward_ipTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardIpTb4b4b4,
Te6edf3forward_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardPortTb4b4b4,

T8b949e// I2P Interface
Te6edf3peersTff7b72: Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff","Tb4b4b4)Tb4b4b4,

T8b949e// rnode interface
Te6edf3portTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeIPInterface"
Tff7b72? Ta5d6ff`Ta5d6fftcp://Tffd700${Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPHostTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPPortTffd700}Ta5d6ff`
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePortTb4b4b4,
Te6edf3frequencyTff7b72: Tff7b72thisTb4b4b4.Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3bandwidthTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidthTb4b4b4,
Te6edf3txpowerTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpowerTb4b4b4,
Te6edf3spreadingfactorTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactorTb4b4b4,
Te6edf3codingrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRateTb4b4b4,

T8b949e// RNode Multi Interface
Te6edf3sub_interfacesTff7b72: Te6edf3subInterfacesDataTb4b4b4,

T8b949e// Seiral, KISS, and AX25KISS
Te6edf3speedTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpeedTb4b4b4,
Te6edf3databitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDatabitsTb4b4b4,
Te6edf3parityTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceParityTb4b4b4,
Te6edf3stopbitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceStopbitsTb4b4b4,

T8b949e// KISS and AX25KISS
Te6edf3preambleTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePreambleTb4b4b4,
Te6edf3txtailTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTXTailTb4b4b4,
Te6edf3persistenceTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePersistenceTb4b4b4,
Te6edf3slottimeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceSlotTimeTb4b4b4,

Te6edf3callsignTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCallsignTb4b4b4,
Te6edf3id_intervalTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDIntervalTb4b4b4,
Te6edf3ssidTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceSSIDTb4b4b4,

T8b949e// Pipe interface
Te6edf3commandTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCommandTb4b4b4,
Te6edf3respawn_delayTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceRespawnDelayTb4b4b4,

T8b949e// Airtime limit
Te6edf3airtime_limit_longTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitLongTb4b4b4,
Te6edf3airtime_limit_shortTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitShortTb4b4b4,

T8b949e// discovery options
Te6edf3discoverableTff7b72: Te6edf3discoveryEnabled Tff7b72? Ta5d6ff"yes" Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_nameTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3announce_intervalTff7b72:
Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72!== Tff7b72null
Tff7b72? Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3reachable_onTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_stamp_valueTff7b72:
Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_value Tff7b72!== Tff7b72null
Tff7b72? Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_encryptTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3publish_ifacTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3latitudeTff7b72:
Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72!== Tff7b72null Tff7b72? Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72:
Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72!== Tff7b72null Tff7b72? Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72!== Tff7b72null Tff7b72? Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_frequencyTff7b72: Te6edf3discoveryEnabled Tff7b72? Te6edf3fallbackDiscoveryFrequency Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Te6edf3discoveryEnabled Tff7b72? Te6edf3fallbackDiscoveryBandwidth Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72:
Te6edf3discoveryEnabled Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulation
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulation
Tff7b72: Tff7b72nullTb4b4b4,

T8b949e// settings that can be added to any interface type
Te6edf3modeTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72|| Ta5d6ff"full"Tb4b4b4,
Te6edf3bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrateTb4b4b4,
Te6edf3network_nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_nameTb4b4b4,
Te6edf3passphraseTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphraseTb4b4b4,
Te6edf3ifac_sizeTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3ifac_sizeTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// show success message
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// track change
Te6edf3GlobalStateTb4b4b4.Te6edf3hasPendingInterfaceChanges Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3modifiedInterfaceNamesTb4b4b4.Te6edf3addTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4)Tb4b4b4;

T8b949e// go to interfaces page
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"interfaces"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"failed to add interface"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ghzToHz Tff7b72= Tff7b72thisTb4b4b4.Te6edf3RNodeGHzValue Tff7b72* T79c0ff1e9Tb4b4b4;
Tff7b72const Te6edf3mhzToHz Tff7b72= Tff7b72thisTb4b4b4.Te6edf3RNodeMHzValue Tff7b72* T79c0ff1e6Tb4b4b4;
Tff7b72const Te6edf3khzToHz Tff7b72= Tff7b72thisTb4b4b4.Te6edf3RNodekHzValue Tff7b72* T79c0ff1e3Tb4b4b4;
Tff7b72return Te6edf3ghzToHz Tff7b72+ Te6edf3mhzToHz Tff7b72+ Te6edf3khzToHzTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3updateRNodeCalculationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3calculateRNodeParametersTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidthTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactorTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRateTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3noiseFloorTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3antennaGainTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpower
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3calculateRNodeParametersTb4b4b4(Te6edf3bandwidthTb4b4b4, Te6edf3spreadingFactorTb4b4b4, Te6edf3codingRateTb4b4b4, Te6edf3noiseFloorTb4b4b4, Te6edf3antennaGainTb4b4b4, Te6edf3transmitPowerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3bandwidth Tff7b72|| Tff7b72!Te6edf3spreadingFactor Tff7b72|| Tff7b72!Te6edf3codingRateTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3dataRate Tff7b72= Ta5d6ff"0 bps"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3sensitivity Tff7b72= Ta5d6ff"??? dBm"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3linkBudget Tff7b72= Ta5d6ff"??? dB"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// https://unsigned.io/understanding-lora-parameters/
T8b949e// "SX1272/3/6/7/8 LoRa Modem Design Guide" https://www.openhacks.com/uploadsproductos/loradesignguide_std.pdf
T8b949e// 4:5 - 4:8
Tff7b72const Te6edf3crn Tff7b72= Tb4b4b4{
T79c0ff5Tff7b72: T79c0ff1Tb4b4b4,
T79c0ff6Tff7b72: T79c0ff2Tb4b4b4,
T79c0ff7Tff7b72: T79c0ff3Tb4b4b4,
T79c0ff8Tff7b72: T79c0ff4Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Te6edf3codingRate Tff7b72= Te6edf3crnTb4b4b4[Te6edf3codingRateTb4b4b4]Tb4b4b4;

Tff7b72const Te6edf3sfn Tff7b72= Tb4b4b4{
T79c0ff5Tff7b72: Tff7b72-T79c0ff2.5Tb4b4b4,
T79c0ff6Tff7b72: Tff7b72-T79c0ff5Tb4b4b4,
T79c0ff7Tff7b72: Tff7b72-T79c0ff7.5Tb4b4b4,
T79c0ff8Tff7b72: Tff7b72-T79c0ff10Tb4b4b4,
T79c0ff9Tff7b72: Tff7b72-T79c0ff12.5Tb4b4b4,
T79c0ff10Tff7b72: Tff7b72-T79c0ff15Tb4b4b4,
T79c0ff11Tff7b72: Tff7b72-T79c0ff17.5Tb4b4b4,
T79c0ff12Tff7b72: Tff7b72-T79c0ff20Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72let Te6edf3dataRate Tff7b72=
Te6edf3spreadingFactor Tff7b72* Tb4b4b4(T79c0ff4 Tff7b72/ Tb4b4b4(T79c0ff4 Tff7b72+ Te6edf3codingRateTb4b4b4) Tff7b72/ Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3spreadingFactorTb4b4b4) Tff7b72/ Tb4b4b4(Te6edf3bandwidth Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72* T79c0ff1000Tb4b4b4;

Tff7b72let Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff174 Tff7b72+ T79c0ff10 Tff7b72* Tffa657MathTb4b4b4.Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noiseFloor Tff7b72+ Tb4b4b4(Te6edf3sfnTb4b4b4[Te6edf3spreadingFactorTb4b4b4] Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3bandwidth Tff7b72=== T79c0ff203125 Tff7b72|| Te6edf3bandwidth Tff7b72=== T79c0ff406250 Tff7b72|| Te6edf3bandwidth Tff7b72> T79c0ff500000Tb4b4b4) Tb4b4b4{
Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff165.6 Tff7b72+ T79c0ff10 Tff7b72* Tffa657MathTb4b4b4.Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noiseFloor Tff7b72+ Tb4b4b4(Te6edf3sfnTb4b4b4[Te6edf3spreadingFactorTb4b4b4] Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72let Te6edf3linkBudget Tff7b72= Te6edf3transmitPower Tff7b72- Te6edf3sensitivity Tff7b72+ Te6edf3antennaGainTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3dataRate Tff7b72=
Te6edf3dataRate Tff7b72< T79c0ff1000 Tff7b72? Ta5d6ff`Tffd700${Te6edf3dataRateTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff0Tb4b4b4)Tffd700}Ta5d6ff bpsTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3dataRate Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff2Tb4b4b4)Tffd700}Ta5d6ff kbpsTa5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3linkBudget Tff7b72= Ta5d6ff`Tffd700${Te6edf3linkBudgetTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff dBTa5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3sensitivity Tff7b72= Ta5d6ff`Tffd700${Te6edf3sensitivityTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff dBmTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addI2PPeerTb4b4b4(Te6edf3address Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeI2PPeerTb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addSubInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3frequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3bandwidthTff7b72: Tff7b72nullTb4b4b4,
Te6edf3txpowerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3spreadingfactorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3codingrateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3vportTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3useKISSAX25Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"AX25KISSInterface"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"KISSInterface"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"AX25KISSInterface"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3removeSubInterfaceTb4b4b4(Te6edf3idxTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3idxTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4.T56d364glass-card Tb4b4b4{
@apply bg-white/95 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff85 Te6edf3backdrop-blur Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-3xl Te6edf3shadow-xlTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-2xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-blue-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-blue-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-2T79c0ff.5 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364glass-label Tb4b4b4{
@apply mb-1 text-sm font-semibold text-gray-800 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72grayT79c0ff-200Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364glass-field Tb4b4b4{
@apply space-y-1Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────